﻿using System;
using Flatland.GeneticProgramming.CoreTypes;


namespace Flatland.GeneticProgramming.TestProblems_Do_not_modify_ {
    public class CommandTestGene : GenoType{
        public override double Fitness()
        {
            return 42;
        }

        public override object Clone()
        {
            return new CommandTestGene();
        }

        /**
         * UNIT TEST WILL LOOK FOR CERTAIN AMOUNT OF TERMINALS
         * 3 bool terminals
         * 3 terminal voids
        */
        [Primitive] //1
        public bool X;

        [Primitive]//2
        public bool Y;

        [Primitive]//3
        public bool E() {
            return true;
        }

        [Primitive]//1
        public void A() { }

        [Primitive]//2
        public void B() { }

        [Primitive]//3
        public void D() { }



        [Primitive]//Not to be included
        public int Z;


        /**
        * UNIT TEST WILL LOOK FOR CERTAIN AMOUNT OF FUNCTIONS
         * 2 bool functions
        */
        [Primitive]//2
        public bool F(bool a, bool b)
        {
            return true;
        }

        [Primitive]//2
        public bool F(bool a, bool b, bool c) {
            return true;
        }

        [Primitive]//Not to be included
        public int G()
        {
            return 42;
        }

        protected override void Act(ref string msg)
        {
    
        }
    }
}
